package com.vineetmanohar.nitrogen;

/**
 * Model represents some data that will be used in code generation. Model can be
 * a flat POJO model or a tree-like model.
 * 
 * Model maybe loaded from an XML file, YAML, JSON, database or directly built
 * in Java. Once loaded in memory, the Model object represents the data in
 * Hierarchical form and is meant to be passed to the code generation engine.
 * 
 * @author vineetmanohar
 */
public interface Model {
	public boolean isPrimitive();

	public ObjectModel getObjectModel();

	public boolean isObject();

	public boolean isArray();

	public ArrayModel getArrayModel();

	public PrimitiveModel getPrimitive();

	public String getModelName();

	public Model getParent();

	public int getDepth();
}